<?php
/**
 * @name Controller_Base
 * @author dichaofeng
 * @desc 后台控制器父类 定义公共方法  权限节点验证 登录认证
 * @see http://www.php.net/manual/en/class.yaf-controller-abstract.php
 */
class Controller_Base extends Yaf_Controller_Abstract {

	public function init()
	{
		$this->get_prv();//登录 角色 非登录 url权限认证
	}
	/*
	 * @desc 获取节点权限
	 * 待完善
	 */
	protected function get_prv($dev='true'){

		/**
		 * 不需要登录就可以访问的链接，也可以是某个目录，不含子目录
		 * 如 "/nologin/", "/nologin/aaa/"
		 **/

		$cur_request=(array)$this->getRequest();

		$m=$cur_request['module'];
		$c=$cur_request['controller'];
		$a=$cur_request['action'];


		$no_need_login_page=array("/block.php","/panel/login.php","/panel/logout.php","/login/index","/index/index");

		// 如果不需要登录就可以访问的话
		$action_url = "/".$c."/".$a;
		$action_url=strtolower($action_url);

		if($this->checkNoNeedLogin($action_url,$no_need_login_page) ){
			// for login.php, logout.php, etc . . .
			return true;
			// ;
		} else {
			// 否则需要验证登录信息
			if(!isset($_SESSION['osa_user_info'])){
				Header("Location: /admin/login/index?ref=".$_SERVER['REQUEST_URI']);
				exit("您无权访问此链接！请先登录管理员账号！");
			}
			//超级管理员
			if($_SESSION['osa_user_info']['group_id']=="1"){
				return true;
			}
			// 验证权限节点
			$prv_data=isset($_SESSION['osa_user_info']['prv_data'])?$_SESSION['osa_user_info']['prv_data']:array();
			if(!in_array($action_url,$prv_data)){
				exit("您无权访问此链接！请联系管理员进行授权操作！");
			}
			//权限认证

		}
		return true;
	}

	/*
	 * 对不需要权限认证的url进行过滤
	 */
	public function checkNoNeedLogin($action_url,$no_need_login_array){

		$last_slash_pos = strrpos($action_url,'/');
		$action_dir = substr($action_url,0,$last_slash_pos+1);
//		print_r("checkNoNeedLogin:");
//		var_dump(in_array($action_url,$no_need_login_array) || in_array($action_dir,$no_need_login_array));
		if(in_array($action_url,$no_need_login_array) || in_array($action_dir,$no_need_login_array)){
			return true;
		}else{
			return false;
		}
	}


}